/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Modelo;

import com.mysql.jdbc.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.sql.PreparedStatement;
/**
 *
 * @author Administrador
 */
public class FacturaDetallesModelo {
        ConexionModelo conexion=new ConexionModelo();
	private transient Connection con;
	ResultSet rs;

    /**
 * Inserto nuevo detalle de pedido
 * @param pedido
 * @throws SQLException
 */
 public void setNuevoDetallesFactura(FacturaDetalles detalles) throws SQLException {// insertar datos a la base de datos
        if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{

                pstmt=(PreparedStatement) con.prepareStatement("insert into detallesfactura (consecutivofactura,itemNo,cantidadfacturada) values(?,?,?)");
                pstmt.setString(1,  detalles.getconsecutivoFactura());
                pstmt.setInt(2, detalles.getItemNo());
                pstmt.setDouble(3,  detalles.getCantidadFacturada());

		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

 //linkedlist clase de java para generar listas
//preparedstatement permite prepara el estado recibir la informacion de la base de datos
//rsultset el resultado
 public LinkedList consultaDetallesTabla(String consulta)throws SQLException{
     if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

     	LinkedList listaClie=new LinkedList();
	PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
                pstmt=con.prepareStatement("select consecutivofactura,itemNo,cantidadfacturada from detallesfactura where consecutivoFactura='"+ consulta + "'");

  		rs=pstmt.executeQuery();
  		while(rs.next()){
  			listaClie.add(FacturaDetalles.load(rs));
  		}

  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}

	return listaClie;
 }

 /**
 * consulta la factura
 * @param String
 * @return Factura
 * @throws SQLException
 */
public LinkedList cargaDetallesTabla(String consulta) throws SQLException{

    LinkedList listaFactura=new LinkedList();
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

      
      PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("SELECT "+      
                                         "detallesfactura.itemNo, "+
                                         "detallespedido.`codigoProducto`, "+
                                         "detallespedido.`cantidad`, "+
                                         "detallesfactura.`cantidadFacturada`, "+
                                         "detallespedido.`valorunitario` "+                                         
                                         "FROM "+
                                         "factura,pedido,detallesPedido,detallesfactura "+
                                         "WHERE "+
                                         "factura.pedido_consecutivo = pedido.consecutivo "+
                                         "AND detallespedido.consecutivoPedido = pedido.consecutivo " +
                                         "AND detallesfactura.consecutivoFactura = factura.consecutivo "+
                                         "And detallesfactura.itemNo=detallespedido.itemNo "+
                                         "AND factura.consecutivo = '"+ consulta + "'");
            rs=pstmt.executeQuery();

            while(rs.next()){
                listaFactura.add(new Object[]
                    {
                      rs.getString(1),//detallespedido_codigoProducto
                      rs.getString(2),//detallespedido_cantidad
                      rs.getString(3),//detallesfactura_cantidadFacturada,
                      rs.getString(4),//AS detallespedido_valorunitario, "+
                      rs.getString(5)//itemNo 
                    });
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return listaFactura;
  }
 
}
